package com.demo.springboot;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;

/***
 * 两种获取配置的方法
 * 配置文件默认的配置文件名字为 application.properties
 * 默认的文件目录：
 *      1. classpath的根目录
 *      2. 或者classpath:/config
 *      3.或者 file:
 *      4.或者 file:/config
 *
 * 默认配置文件名字可以使用--spring.config.name来指定，只需要指定文件的名字，不需要后缀名
 * 默认的配置文件路径可以使用 --spring.config.location 来指定，
 *      配置文件需要指定文件全路径，包括路径和文件名全称，还可以指定多个
 *      多个用逗号隔开，文件指定方式有两种：1.classpath 2.file
 *
 *
 */
@Configuration
@ConfigurationProperties(prefix = "demo")
public class UserConfig {

    @Value("${local.port}")
    private String localPort;

    @Value("${local.port}")
    private Integer localPort2;

    /**
     * @Value 默认值必须要有配置项，配置项可以为空，如果没有配置项，则可以给默认值
     */
    @Value("${tomcat.port:9090}")
    private String tomcatPort;

    @Autowired
    private Environment env;

    private String name;
    private String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void show() {
        System.out.println("nmae = " + env.getProperty("name"));
        System.out.println("app.name = " + env.getProperty("app.name"));
        System.out.println("tomcatPort = " + env.getProperty("tomcat.port"));
        System.out.println("local.ip = " + env.getProperty("local.ip"));
        System.out.println("localPort = " + env.getProperty("local.port",Integer.class));
        System.out.println("localPort = " + localPort);
        System.out.println("localPort2 = " + localPort);

        System.out.println("demo.name = " + name);
        System.out.println("demo.password = " + password);


    }
}
